package com.sgj.principle.singleresponsibility;

/**
 * 单一职责
 * @Author: Guoji Shen
 * @Date: 2021/11/8 9:19
 */
public class SingleResponsibility2 {

    public static void main(String[] args) {
        /**
         * 遵守了单一职责原则
         * 但是这样做的改动很大，即将类分解，同时修改客户端
         * 可以进行改进：直接修改Vehicle类，代码改动会比较少
         */
        RodeVehicle rodeVehicle = new RodeVehicle();
        rodeVehicle.run("摩托车");
        rodeVehicle.run("汽车");

        AirVehicle airVehicle = new AirVehicle();
        airVehicle.run("飞机");

        WaterVehicle waterVehicle = new WaterVehicle();
        waterVehicle.run("快艇");
    }
}

// 公路交通工具
class RodeVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + " 在公路上运行....");
    }
}

// 天空交通工具
class AirVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + " 在天空上运行....");
    }
}

// 水流交通工具
class WaterVehicle {
    public void run(String vehicle) {
        System.out.println(vehicle + " 在水上运行....");
    }
}